
def usage():
    # key不能使用可变类型
    # dict1={"key1":1,2:2,[1,2,3]:3}
    # 元祖tuple 元素后加逗号 ,，否则会被视为普通值
    dict1={"key1":1,2:2,(3,):"3"}
    print(dict1)


    pass

"""
 新增相关
"""
def add():
    dict1 = {"key1": 1, 2: 2, (3,): "3"}
    # 新增元素
    dict1["key4"]=4
    print(dict1["key4"])

    # 更新
    dict1["key4"]=5
    print(dict1.get("key5",None))

    # 合并 注意原地修改
    dict1.update({"key1":"value1"})
    print(dict1.get("key1", None))

    #3.9新特性
    # 二元操作符|        dict2 | dict3 合并创建一个新字典，重复key以dict3为准
    # 原地操作符|=       dict2 |= dict3 直接更新左侧的字典,重复key以dict3为准
    dict2={1:1,2:2,3:3}
    dict3={1:11,2:22,3:33}
    print(dict3 | dict2)
    dict2 |= dict3
    print(dict2)
    pass

"""
:returns 
删除相关
"""
def remove():
    dict1 = {"key1": 1, 2: 2, (3,): "3"}
    #通过key删除item,返回被删除的值
    print(dict1.pop("key1"))
    print(dict1)

    #返回并删除字典中的最后一对键和值
    print(dict1.popitem())
    print(dict1)

    print(type(dict1))

    pass

"""
查询相关
"""
def query():
    dict1 = {"key1": 1, 2: 2, (3,): "3"}
    #通过Key获取元素,值不存在会异常
    print(dict1["key1"])
    #通过Key获取元素,不存在则会返回默认值
    print(dict1.get("key2",None))
    #查询key,不存在则会返回默认值
    print(dict1.setdefault("key2","key2None"))

    #判断key是否存在
    print(2 in dict1)
    #keys 需要转换为list
    print(list(dict1.keys()))
    #values
    print(dict1.values())
    # items
    print(dict1.items())
    pass

#字典（Dictionary） 是一种可变的、无序的键值对（key-value）集合，用大括号 {} 表示，键和值之间用冒号 : 分隔。KEY不可变
if __name__ == '__main__':
    # usage()
    add()
    #query()
    # remove()
    pass